package models.vo {

  import org.restfulx.collections.ModelsCollection;
  import org.restfulx.models.RxModel;

  [Resource(name="atividades")]

  [Bindable]
  public class Atividade extends RxModel {
    public static const LABEL:String = "descricao";

    public var descricao:String = "";

    public var descricaoAnalista:String = "";

    [HasMany]
    public var produtos:ModelsCollection;

    [BelongsTo]
    public var caracterizacao:Caracterizacao;

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    [Ignored]
    public function get algumProdutoAtendeCondicao():Boolean {
      if (!produtos)
        return false;
      var produto:Produto;
      for (var i:int = 0; i < produtos.length; i++) {
        produto = produtos[i] as Produto;
        if (produto.condicaoAtendida)
          return true;
      }
      return false;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function Atividade() {
      super(LABEL);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getDescricaoAnalista():String {
      return (descricaoAnalista != "") ? descricaoAnalista : descricao;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getProdutos():ModelsCollection {
      if (!produtos)
        produtos = new ModelsCollection();

      return produtos;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////

    public function getProdutoById(id:String):Produto {
      var result:Produto = new Produto();

      getProdutos();

      for (var i:int = 0; i < produtos.length; i++) {
        if (Produto(produtos.getItemAt(i)).id == id) {
          result = Produto(produtos.getItemAt(i));
          break;
        }
      }
      return result;
    }

  }
}
